var fp;
var UpdataSaleForm;
var QueryForm; // 查询表单
var QueryWindow; // 查询窗口
var addWindow;
var updataWindow;
var DeleteWindow;
var SaleGridPanel, SALEDeleteGrid;
var SaleStore, SALEDeleteStore; // 存放查询数据的表格的存贮变量
var SALEDeleteStore;
var removeDelete, selections;

/*
 * 从数据库的资产表中根据资产编号取出匹配的记录 记录为 -- 设备名称
 */
var getData = function() {
	var aNo = fp.form.findField('AssetNo').getValue();

	Ext.Ajax.request({
				url : '/FAM/getAssetServlet',
				success : function(response, opts) {
					var record = Ext.util.JSON.decode(response.responseText);
					fp.form.findField('Name').setValue(record.name);
				},
				failure : Ext.emptyFn(),
				params : {
					assetNo : aNo
				}
			});
}

var assetAddSaleForm = function() {
	var Asset_cb = new Ext.form.ComboBox({
				fieldLabel : '资产编号',
				name : 'AssetNo',
				store : new Ext.data.Store({
							proxy : new Ext.data.HttpProxy({
										url : '/FAM/getAssetNoServlet'
									}),
							reader : new Ext.data.JsonReader({
										root : 'assetNo'
									}, ['assetNo']),
							autoLoad : false
						}),
				emptyText : '请选择',
				mode : 'remote',
				triggerAction : 'all',
				valueField : 'assetNo',
				displayField : 'assetNo',
				readOnly : true
			})

	Asset_cb.on('select', getData);

	fp = new Ext.form.FormPanel({
				// title:'新增资产出售信息',
				frame : true,
				width : '100%',
				autoHeight : true,
				labelAlign : 'right',
				labelWidht : 60,
				items : [{
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产出售信息',
										autoHeight : true,
										defaults : {
											width : 170
										},
										defaultType : 'textfield',
										items : [Asset_cb, {
													fieldLabel : '购买单位',
													name : 'PurchaseUnit',
													allowBlank : false
												}, {
													fieldLabel : '出售时间',
													name : 'PurchaseTime',
													xtype : 'datefield',
													format : 'Y-m-d',
													allowBlank : false
												}, {
													fieldLabel : '设备状态',
													name : 'Status',
													allowBlank : false
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产出售信息',
										autoHeight : true,
										style : 'margin-left: 30px;',
										defaults : {
											width : 170
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '设备名称',
													name : 'Name',
													readOnly : true
												}, {
													fieldLabel : '金额(RMB)',
													name : 'Money',
													allowBlank : false
												}, {
													fieldLabel : '联系方式',
													name : 'ContactMode',
													allowBlank : false
												}, {
													fieldLabel : '附属设备',
													name : 'EquipmentAttach',
													allowBlank : false
												}]
									}]
						}, {
							xtype : 'fieldset',
							title : '备注信息',
							autoHeight : true,
							items : [{
										fieldLabel : '备注',
										width : '95%',
										height : 25,
										xtype : 'textarea',
										name : 'Remark',
										allowBlank : false
									}]
						}]
			})
}

var BuildUpdataSaleForm = function() {
	UpdataSaleForm = new Ext.form.FormPanel({
				frame : true,
				width : '100%',
				autoHeight : true,
				labelAlign : 'right',
				labelWidht : 60,
				items : [{
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产出售信息',
										autoHeight : true,
										defaults : {
											width : 170
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '资产编号',
													name : 'assetNo',
													readOnly : true
												}, {
													fieldLabel : '设备名称',
													name : 'name',
													allowBlank : false
												}, {
													fieldLabel : '附属设备',
													name : 'equipmentAttach',
													allowBlank : false
												}, {
													fieldLabel : '设备状态',
													name : 'status',
													allowBlank : false
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产出售信息',
										autoHeight : true,
										style : 'margin-left: 30px;',
										defaults : {
											width : 170
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '购买单位',
													name : 'purchaseUnit',
													allowBlank : false
												}, {
													fieldLabel : '金额(RMB)',
													name : 'money',
													allowBlank : false
												}, {
													fieldLabel : '出售时间',
													name : 'purchaseTime',
													xtype : 'datefield',
													format : 'Y-m-d',
													allowBlank : false,
													readOnly : true
												}, {
													fieldLabel : '联系方式',
													name : 'contactMode',
													allowBlank : false
												}]
									}]
						}, {
							xtype : 'fieldset',
							title : '备注信息',
							autoHeight : true,
							items : [{
										width : '95%',
										height : 25,
										fieldLabel : '备注',
										xtype : 'textarea',
										name : 'remark',
										allowBlank : false
									}]
						}]
			})
}

var DeleteSelectedAsset = function() {
	BuildDeleteSALEGrid();
	BuildDeleteWindow();

	var length = selections.length;

	for (var i = 0; i < length; i++) {
		var record = selections[i];
		SALEDeleteStore.add(record);
	}

	DeleteWindow.show();
}

/*
 * 在表格中删除数据
 */
var AccessDBtoDelete = function() {
	var length = removeDelete.length;

	for (var i = 0; i < length; i++) {
		var record = removeDelete[0];
		SALEDeleteStore.remove(record);
	}
}

/*
 * 访问数据库，删除数据
 */
var DeleteSALE = function() {
	var deleteAsset = ",";
	for (var i = 0; i < SALEDeleteStore.getCount(); i++) {
		var record = SALEDeleteStore.getAt(i);
		deleteAsset = deleteAsset + record.get('assetNo') + ",";
	}

	Ext.Ajax.request({
				url : '/FAM/deleteAssetSaleServlet',
				success : function(response, opts) {
					insertUserLog(1, '删除');
				},
				failure : function() {
					insertUserLog(0, '删除')
				},
				params : {
					assetNo : deleteAsset
				}
			});
}

/*
 * 资产信息成功添加 参数 1 -- 添加成功 2 -- 添加失败 记录用户日志
 */
var insertUserLog = function(flag) {
	if (flag == 1) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 1,
						type : "删除资产出售信息",
						obj : "资产出售"
					}
				});
		DeleteWindow.hide();
		SaleStore.reload();
	} else if (flag == 0) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 0,
						type : "删除资产出售信息",
						obj : "资产出售"
					}
				});
	} else if (flag == 2) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 1,
						type : "新增资产出售信息",
						obj : "资产出售"
					}
				});
		addWindow.hide();
		SaleStore.reload();
	} else if (flag == 3) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 0,
						type : "新增资产出售信息",
						obj : "资产出售"
					}
				});
	} else if (flag == 4) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 1,
						type : "修改资产出售信息",
						obj : "资产出售"
					}
				});
		updataWindow.hide();
		SaleStore.reload();
	} else if (flag == 5) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 0,
						type : "修改资产出售信息",
						obj : "资产出售"
					}
				});
	}
}

/*
 * 通过查询条件连接数据库得到数据 --- 未完成
 * 
 */
var Query = function() {
	var StartTime = QueryForm.form.findField('PurchaseStartTime').getRawValue();
	var EndTime = QueryForm.form.findField('PurchaseEndingTime').getRawValue();

	SaleStore.baseParams['start'] = '0';
	SaleStore.baseParams['limit'] = '15';
	SaleStore.baseParams['assetNo'] = QueryForm.form.findField('AssetNo')
			.getValue();
	SaleStore.baseParams['purchaseUnit'] = QueryForm.form
			.findField('PurchaseUnit').getValue();
	SaleStore.baseParams['assetName'] = QueryForm.form.findField('AssetName')
			.getValue();
	SaleStore.baseParams['PurchaseStartTime'] = StartTime;
	SaleStore.baseParams['PurchaseEndingTime'] = EndTime;

	if (StartTime > EndTime) {
		alert('输入的开始时间应该小于结束时间');
		QueryForm.form.findField('PurchaseStartTime').setValue('');
		QueryForm.form.findField('PurchaseEndingTime').setValue('');
		return;
	} else {
		if (((EndTime > StartTime) && (StartTime == ''))
				|| ((EndTime > StartTime) && (StartTime == null))) {
			alert('开始时间不能为空');
			return;
		}
	}

	QueryWindow.hide();
	SaleStore.load();
}

/*
 * 建立存放资产出售信息的布局
 */
var BuildSaleGrid = function() {
	var SelectModel = new Ext.grid.CheckboxSelectionModel({
				listeners : {
					selectionchange : function(sm) {
						selections = SaleGridPanel.getSelectionModel()
								.getSelections();

						if (sm.getCount()) {
							SaleGridPanel.removeButton.enable();
							SaleGridPanel.updateButton.enable();
						} else {
							SaleGridPanel.removeButton.disable();
							SaleGridPanel.updateButton.disable();
						}
					}
				}
			});

	var SaleColumnModel = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),
			SelectModel, {
				header : '资产编号',
				sortable : true,
				dataIndex : 'assetNo'
			}, {
				header : '设备名称',
				sortable : true,
				dataIndex : 'name'
			}, {
				header : '购买单位',
				sortable : true,
				dataIndex : 'purchaseUnit'
			}, {
				header : '金额(RMB)',
				sortable : true,
				dataIndex : 'money'
			}, {
				header : '出售时间',
				sortable : true,
				dataIndex : 'purchaseTime',
				type : 'date',
				renderer : Ext.util.Format.dateRenderer('Y年m月d日')
			}, {
				header : '联系方式',
				sortable : true,
				dataIndex : 'contactMode'
			}, {
				header : '设备状态',
				sortable : true,
				dataIndex : 'status'
			}, {
				header : '附属设备',
				sortable : true,
				dataIndex : 'equipmentAttach'
			}, {
				id : 'remark',
				header : '备注信息',
				sortable : true,
				dataIndex : 'remark'
			}]);

	var SaleRecord = new Ext.data.Record.create([{
				name : 'assetNo'
			}, {
				name : 'name'
			}, {
				name : 'purchaseUnit'
			}, {
				name : 'money'
			}, {
				name : 'purchaseTime',
				type : 'date',
				dateFormat : 'Y-m-d H:i:s'
			}, {
				name : 'contactMode'
			}, {
				name : 'status'
			}, {
				name : 'equipmentAttach'
			}, {
				name : 'remark'
			}]);

	SaleStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '/FAM/selectAssetSaleServlet'
						}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'total',
							root : 'result'
						}, SaleRecord)
			});

	SaleGridPanel = new Ext.grid.GridPanel({
				title : '查询的资产出售信息',
				width : '100%',
				height : 500,
				autoExpandColumn : 'remark',
				layout : 'fit',
				store : SaleStore,
				cm : SaleColumnModel,
				sm : SelectModel,
				stripeRows : true,
				loadMask : true,
				viewConfig : {
					forceFit : true
				},
				plugins : new Ext.ux.PanelResizer({
							minHeight : 100
						}),
				tbar : [{
							iconCls : 'add',
							tooltip : '新增资产出售信息',
							text : '新   增',
							handler : function() {
								addWindow.show();
							}
						}, '-', {
							iconCls : 'delete',
							tooltip : '删除选中的资产出售信息',
							text : '删   除',
							ref : '../removeButton',
							disabled : true,
							handler : DeleteSelectedAsset
						}, '-', {
							iconCls : 'edit',
							tooltip : '修改资产出售信息',
							text : '修  改',
							ref : '../updateButton',
							disabled : true,
							handler : function() {
								if (selections.length > 1) {
									alert("你只能选择一条记录");
									SelectModel.clearSelections();
								} else {
									for (var i = 0; i < selections.length; i++) {

										var record = selections[i];
										updataWindow.show();
										UpdataSaleForm.getForm()
												.loadRecord(record);
									}
								}

							}
						}, '-', {
							iconCls : 'query',
							text : '查  询',
							tooltip : '查询资产报损信息',
							handler : function() {
								QueryWindow.show();
							}
						}],
				bbar : new Ext.PagingToolbar({
							pageSize : 15,
							store : SaleStore,
							displayInfo : true,
							plugins : new Ext.ux.ProgressBarPager()
						})
			});
}

var BuildDeleteSALEGrid = function() {
	var SelectModel = new Ext.grid.CheckboxSelectionModel({
				listeners : {
					selectionchange : function(sm) {
						removeDelete = SALEDeleteGrid.getSelectionModel()
								.getSelections();

						if (sm.getCount()) {
							SALEDeleteGrid.removeButton.enable();
						} else {
							SALEDeleteGrid.removeButton.disable();
						}
					}
				}
			});

	var SaleColumnModel = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),
			{
				header : '资产编号',
				width : 80,
				sortable : true,
				dataIndex : 'assetNo'
			}, {
				header : '设备名称',
				width : 80,
				sortable : true,
				dataIndex : 'name'
			}, {
				header : '购买单位',
				width : 60,
				sortable : true,
				dataIndex : 'purchaseUnit'
			}, {
				header : '金额(RMB)',
				width : 80,
				sortable : true,
				dataIndex : 'money'
			}, {
				header : '出售时间',
				width : 60,
				sortable : true,
				dataIndex : 'purchaseTime'
			}, {
				header : '联系方式',
				width : 60,
				sortable : true,
				dataIndex : 'contactMode'
			}, {
				header : '设备状态',
				width : 60,
				sortable : true,
				dataIndex : 'status'
			}, {
				header : '附属设备',
				width : 60,
				sortable : true,
				dataIndex : 'equipmentAttach'
			}, {
				header : '备注信息',
				width : 60,
				sortable : true,
				dataIndex : 'remark'
			}, SelectModel]);

	var SaleRecord = new Ext.data.Record.create([{
				name : 'assetNo'
			}, {
				name : 'name'
			}, {
				name : 'purchaseUnit'
			}, {
				name : 'money'
			}, {
				name : 'purchaseTime'
			}, {
				name : 'contactMode'
			}, {
				name : 'status'
			}, {
				name : 'equipmentAttach'
			}, {
				name : 'remark'
			}]);

	SALEDeleteStore = new Ext.data.Store({
				proxy : new Ext.data.MemoryProxy(),
				reader : new Ext.data.ArrayReader({}, SaleRecord)
			});

	SALEDeleteGrid = new Ext.grid.GridPanel({
				width : '100%',
				autoHeight : true,
				store : SALEDeleteStore,
				cm : SaleColumnModel,
				sm : SelectModel,
				stripeRows : true,
				loadMask : true,
				tbar : ['已选中要删除的资产信息', '->', {
							iconCls : 'delete',
							tooltip : '移除选中要删除的资产出售信息',
							text : '移   除',
							ref : '../removeButton',
							disabled : true,
							handler : AccessDBtoDelete
						}]
			});
}

/*
 * 建立查询资产出售信息的布局
 */
var BuildQueryForm = function() {
	QueryForm = new Ext.form.FormPanel({
				labelAlign : 'right',
				labelWidth : 100,
				width : '100%',
				bodyStyle : 'padding:20px 10px;',
				items : [{
							layout : 'column',
							border : false,
							items : [{
										bodyStyle : 'padding-top:5px',
										columnWidth : .5,
										layout : 'form',
										defaults : {
											width : 150
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '资产编号',
													name : 'AssetNo'
												}, {
													fieldLabel : '设备名称',
													name : 'AssetName'
												}, {
													fieldLabel : '购买单位',
													name : 'PurchaseUnit'
												}]
									}, {
										bodyStyle : 'padding-top:15px',
										columnWidth : .5,
										style : 'margin-left: 15px;',
										layout : 'form',
										defaults : {
											width : 150
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '出售时间(开始)',
													name : 'PurchaseStartTime',
													xtype : 'datefield',
													format : 'Y-m-d'
												}, {
													style : 'margin:0 0 15px 0',
													fieldLabel : '出售时间(结束)',
													name : 'PurchaseEndingTime',
													xtype : 'datefield',
													format : 'Y-m-d'
												}]
									}]
						}]
			})
}

/*
 * 建立查询资产出售信息的窗口 --- 存放QueryForm
 */
var BuildQueryWindow = function() {
	QueryWindow = new Ext.Window({
				title : '查询窗口 (请选择查询条件 )',
				width : 600,
				heigth : 400,
				modal : true,
				resizable : false,
				closeAction : 'hide',
				items : [QueryForm],
				buttons : [{
							iconCls : 'query',
							text : '查 询',
							handler : Query
						}, {
							iconCls : 'empty',
							text : '清 空',
							handler : function() {
								QueryForm.getForm().reset();
							}
						}],
				buttonAlign : 'center'
			})
}

var addAssetWindow = function() {
	addWindow = new Ext.Window({
				title : '新增资产出售信息',
				modal : true,
				width : 670,
				height : 280,
				resizable : false,
				closeAction : 'hide',
				items : [fp],
				buttons : [{
					iconCls : 'save',
					text : '保 存',
					handler : function() {
						if (!fp.getForm().isValid()) {
							return;
						} else {
							fp.getForm().submit({
										waitMsg : '正在添加.....',
										url : '/FAM/addAssetSaleServlet', // 提交数据到数据库
										success : function(f, action) {
											Ext.Msg.alert('成功',
													action.result.msg);
											if (action.result.success) {
												fp.getForm().reset();
												insertUserLog(2); // 增加资产出售信息成功后，记录用户日志
											} else
												insertUserLog(3);
										}
									})
						}
					}
				}, {
					iconCls : 'empty',
					text : '清 空',
					handler : function() {
						fp.getForm().reset();
					}
				}, {
					iconCls : 'back',
					text : '返 回',
					handler : function() {
						addWindow.hide();
					}
				}],
				buttonAlign : 'right'
			})
}

var UpdataWindow = function() {
	updataWindow = new Ext.Window({
				title : '资产出售信息(修改模式)',
				modal : true,
				width : 670,
				height : 280,
				resizable : false,
				closeAction : 'hide',
				items : [UpdataSaleForm],
				buttons : [{
					iconCls : 'update',
					text : '修 改',
					// id:'updataBtn',
					// disabled:true,
					handler : function() {
						if (!UpdataSaleForm.getForm().isValid()) {
							return;
						} else {
							UpdataSaleForm.getForm().submit({
										waitMsg : '正在修改数据.....',
										url : '/FAM/updataAssetSaleServlet', // 访问数据库修改资产表的信息
										// --
										// 参数
										// --
										// 除了AssetNo
										// 和
										// state
										// 其他参数都可以更改
										success : function(f, action) {
											Ext.Msg.alert('成功',
													action.result.msg);
											if (action.result.success) {
												UpdataSaleForm.getForm()
														.reset();
												// Ext.getCmp('updataBtn').disable();
												insertUserLog(4); // 修改资产出售信息成功，记录用户日志
												// ，1 --
												// XX管理员修改资产信息成功
											} else
												insertUserLog(5); // 修改资产出售信息失败，记录用户日志
											// ，0 --
											// XX管理员修改资产信息失败
										}
									})
						}
					}
				}, {
					iconCls : 'empty',
					text : '清 空',
					handler : function() {
						UpdataDamageForm.getForm().reset();
					}
				}, {
					iconCls : 'back',
					text : '返 回',
					handler : function() {
						updataWindow.hide();
					}
				}],
				buttonAlign : 'right'
			})
}

var BuildDeleteWindow = function() {
	DeleteWindow = new Ext.Window({
				title : '删除窗口 ',
				modal : true,
				closeAction : 'hide',
				resizable : false,
				items : [SALEDeleteGrid],
				buttons : [{
							iconCls : 'ok',
							text : '确 定',
							handler : DeleteSALE
						}, {
							iconCls : 'cancel',
							text : '取 消',
							handler : function() {
								DeleteWindow.hide();
							}
						}],
				buttonAlign : 'center'
			})
}

/*
 * viewPort布局
 */
var BuildLayout = function() {
	new Ext.Viewport({
				layout : 'border',
				items : [{
							region : 'center',
							layout : 'fit',
							items : [SaleGridPanel]
						}]
			})
}

/*
 * 初始化各个界面的布局
 */
var init = function() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';

	BuildQueryForm();
	BuildUpdataSaleForm();
	assetAddSaleForm();
	BuildQueryWindow();
	addAssetWindow();
	UpdataWindow();
	BuildSaleGrid();
	BuildLayout();
	QueryWindow.show();
}

Ext.onReady(init);
